#include "DataAccess.h"

QString DataAccess::loginRequest(const QString &account, const QString &password)
{
    if (account == "Lizhao121" && password == "Zh342765")
        return account;
    if (account == "user123" && password == "Aa123456")
        return account;
    return "false";
}

QString DataAccess::registerRequest(const QString &account, const QString &password)
{
    if (account == "user123" && password == "Aa123456")
        return account;
    return "false";
}

QList<BlogPreview> DataAccess::getBlogListByHome()
{
    QList<BlogPreview> list;
    list.append(BlogPreview("QT 连接 MySQL8 提示 QMYSQL driver not loaded",
                            "这是因为 MySQL8.0 后，提高了客户端和服务器数据通信的安全性，对通信数据做了加密，所以还需要依赖一些其他的动态库。完成第一步后，对于 MySQL8.0 之前的版本，做到这一步就结束了，可以成功连接到 MySQL 数据库，大功告成。然而对于 MySQL8.0 之后的版本，直接运行程序会提示驱动无法被加载。可能你看到的文件名和我的不完全相同，相似即可。然后将这两个文件拷贝到你的项目的程序的。",
                            "脸滚键盘1201",
                            "2025-06-26 09:21",
                            4956,
                            29,
                            14,
                            68,
                            QPixmap(":/test/resoures/test/cover6.png")));
    list.append(BlogPreview("1189. “气球” 的最大数量 — day96",
                            "本人csdn博客：https://blog.csdn.net/"
                            "weixin_"
                            "46654114。中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个"
                            "单词。转载说明：跟我说明，务必注明来源，附带本人博客连接。中的字母来拼"
                            "凑尽可能多的单词。作者：神的孩子在歌唱。",
                            "神的孩子都在歌唱",
                            "2025-07-02 23:50",
                            609,
                            17,
                            1,
                            17,
                            QPixmap(":/test/resoures/test/cover1.png")));
    list.append(BlogPreview("网络地址与子网划分：一次性搞清 CIDR、VLSM 和子网掩码",
                            "子网掩码（Subnet Mask）是用于区分网络地址和主机地址的 32 位二进制数，与 IP "
                            "地址一起使用。标识网络号，用于识别网络的地址范围。标识主机号，用于标识网络中的"
                            "具体设备。子网掩码的作用确定 IP "
                            "地址的网络部分和主机部分。帮助路由器快速判断数据包的目标网络。划分子网，提高网"
                            "络管理的灵活性。IP "
                            "地址子网掩码网络地址主机地址范围10.0.0.5255.0.0.010.0.0."
                            "0提供灵活的地址聚合机制，减少路由表项，提高路由效率。",
                            "神的孩子都在歌唱",
                            "2025-07-03 21:54",
                            297,
                            9,
                            0,
                            3,
                            QPixmap(":/test/resoures/test/cover2.png")));
    list.append(BlogPreview("全网独一份pytest接口自动化测试框架教程以及全套命令参数教程和源码",
                            "2、有main函数，命令中执行python "
                            "xxx.py，调用py文件中main函数中的pytest.main()"
                            "；说明：直接执行这个模块，被执行的模块是main（可print(__name__)"
                            "查看结果），如果此模块被其它模块导入，这个模块就不是main了。如果放到vscode中，会执行工程下"
                            "所有用例，只运行当前模块的用例，需要加参数__file__，表示当前文件。1."
                            "具有unittest绝大部分功能，非常容易上手，入门简单，功能灵活，文档丰富，文档中有很多实例可以"
                            "参考。",
                            "一个处女座的测试",
                            "2025-07-03 17:45",
                            203,
                            3,
                            0,
                            3,
                            QPixmap(":/other/resoures/other/defaultCover.png")));
    list.append(BlogPreview("@Bean属性的destroyMethod解释",
                            "摘要：Spring 4.3+ 的 @Bean 默认使用 destroyMethod = "
                            "&quot;(inferred)&quot;，自动检测并调用 Bean 的 close() 或 shutdown() 方法进行销毁。适用于 "
                            "CuratorFramework、JDBC 连接等资源管理，开发者无需显式配置。若需禁用自动推断，可设置 "
                            "destroyMethod = &quot;&quot;，或通过 @PreDestroy "
                            "自定义销毁逻辑。最佳实践建议对关键资源显式指定销毁方法以提高可读性，确保资源正确释放。（",
                            "后会无期77",
                            "2025-07-03 15:12",
                            142,
                            3,
                            0,
                            4,
                            QPixmap(":/other/resoures/other/defaultCover.png")));
    list.append(BlogPreview("jitterbuffer进行音视频同步，及动态调整buffer大小",
                            "摘要：本文探讨了如何借鉴WebRTC的JitterBuffer机制优化QUIC服务器性能。主要涉及：1) "
                            "接收缓冲区设置500ms延时以抗抖动；2) 通过时间戳同步音视频流，按PTS顺序串行发送；3) "
                            "动态调整缓冲区大小策略，根据网络状况逐步调整(如每200ms增加30ms)"
                            "，平衡抖动覆盖与延迟影响。这种优化能有效应对常规网络抖动，但对长时间网络恶化(如电梯场景)"
                            "效果有限。",
                            "、、、、南山小雨、、、、",
                            "2025-07-03 14:21",
                            126,
                            4,
                            0,
                            1,
                            QPixmap(":/other/resoures/other/defaultCover.png")));
    list.append(BlogPreview("【Navicat系列】如何解决导入 MySQL 数据库sql文件失败报错 [Error] 1046 – No database "
                            "selected 问题",
                            "摘要 在使用Navicat导入MySQL数据库时，遇到[Error] 1046 – No database "
                            "selected错误，通常是由于未创建或选中目标数据库直接执行SQL脚本所致。本文提供三步解决方案： "
                            "创建目标数据库：确保数据库存在（如my_project_db），字符集设为utf8mb4。 "
                            "选中数据库：在Navicat中高亮目标库后执行SQL文件。 脚本优化：在SQL文件开头添加USE "
                            "db_name;语句以明确上下文。 "
                            "此外，还涉及权限检查、字符集匹配及大文件导入优化等扩展建议，帮助彻底解决类似",
                            "猫头虎",
                            "2025-07-02 23:50",
                            610,
                            17,
                            1,
                            17,
                            QPixmap(":/test/resoures/test/cover3.png")));
    list.append(BlogPreview("猫头虎 分享：如何解决pip install报错 ModuleNotFoundError: No module named ‘pyserial’问题",
                            "猫头虎是谁？猫头虎 所有平台的IP名称统一为 猫头虎 或 猫头虎技术团队 。 "
                            "PyCharm环境下的pyserial问题解决 在PyCharm 2025开发物联网项目时，pip install "
                            "pyserial安装成功后仍可能因环境错配、包名冲突或IDE配置问题导致ModuleNotFoundError。本文通过"
                            "真实案例，系统梳理了9大排查维度： 环境一致性：验证终端与PyCharm解释器路径是否匹配； "
                            "安装方式优化：使用python -m pip确保安装到目标环境； ",
                            "猫头虎",
                            "2025-07-02 23:50",
                            441,
                            10,
                            0,
                            10,
                            QPixmap(":/test/resoures/test/cover4.png")));
    // int n = list.size();
    // while (n > 1)
    // {
    //     int k = QRandomGenerator::global()->bounded(n--);
    //     qSwap(list[n], list[k]);
    // }
    return list;
}

QList<BlogPreview> DataAccess::getBlogListBySearch()
{
    QList<BlogPreview> list;
    list.append(BlogPreview("QT 连接 MySQL8 提示 QMYSQL driver not loaded",
                            "这是因为 MySQL8.0 后，提高了客户端和服务器数据通信的安全性，对通信数据做了加密，所以还需要依赖一些其他的动态库。完成第一步后，对于 MySQL8.0 之前的版本，做到这一步就结束了，可以成功连接到 MySQL 数据库，大功告成。然而对于 MySQL8.0 之后的版本，直接运行程序会提示驱动无法被加载。可能你看到的文件名和我的不完全相同，相似即可。然后将这两个文件拷贝到你的项目的程序的。",
                            "脸滚键盘1201",
                            "2025-06-26 09:21",
                            4956,
                            29,
                            14,
                            68,
                            QPixmap(":/test/resoures/test/cover6.png")));
    return list;
}

QList<BlogPreview> DataAccess::getBlogListBySea()
{
    QList<BlogPreview> list;
    list.append(BlogPreview("1189. “气球” 的最大数量 — day96",
                            "本人csdn博客：https://blog.csdn.net/"
                            "weixin_"
                            "46654114。中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个"
                            "单词。转载说明：跟我说明，务必注明来源，附带本人博客连接。中的字母来拼"
                            "凑尽可能多的单词。作者：神的孩子在歌唱。",
                            "神的孩子都在歌唱",
                            "2025-07-02 23:50",
                            609,
                            17,
                            1,
                            17,
                            QPixmap(":/test/resoures/test/cover1.png")));
    return list;
}

QList<BlogPreview> DataAccess::getBlogListByFollowed()
{
    QList<BlogPreview> list;
    list.append(BlogPreview("网络地址与子网划分：一次性搞清 CIDR、VLSM 和子网掩码",
                            "子网掩码（Subnet Mask）是用于区分网络地址和主机地址的 32 位二进制数，与 IP "
                            "地址一起使用。标识网络号，用于识别网络的地址范围。标识主机号，用于标识网络中的"
                            "具体设备。子网掩码的作用确定 IP "
                            "地址的网络部分和主机部分。帮助路由器快速判断数据包的目标网络。划分子网，提高网"
                            "络管理的灵活性。IP "
                            "地址子网掩码网络地址主机地址范围10.0.0.5255.0.0.010.0.0."
                            "0提供灵活的地址聚合机制，减少路由表项，提高路由效率。",
                            "神的孩子都在歌唱",
                            "2025-07-03 21:54",
                            297,
                            9,
                            0,
                            3,
                            QPixmap(":/test/resoures/test/cover2.png")));
    list.append(BlogPreview("1189. “气球” 的最大数量 — day96",
                            "本人csdn博客：https://blog.csdn.net/"
                            "weixin_"
                            "46654114。中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个"
                            "单词。转载说明：跟我说明，务必注明来源，附带本人博客连接。中的字母来拼"
                            "凑尽可能多的单词。作者：神的孩子在歌唱。",
                            "神的孩子都在歌唱",
                            "2025-07-02 23:50",
                            609,
                            17,
                            1,
                            17,
                            QPixmap(":/test/resoures/test/cover1.png")));
    return list;
}

QList<BlogPreview> DataAccess::getBlogListByMine()
{
    QList<BlogPreview> list;
    list.append(BlogPreview("QT 连接 MySQL8 提示 QMYSQL driver not loaded",
                            "这是因为 MySQL8.0 后，提高了客户端和服务器数据通信的安全性，对通信数据做了加密，所以还需要依赖一些其他的动态库。完成第一步后，对于 MySQL8.0 之前的版本，做到这一步就结束了，可以成功连接到 MySQL 数据库，大功告成。然而对于 MySQL8.0 之后的版本，直接运行程序会提示驱动无法被加载。可能你看到的文件名和我的不完全相同，相似即可。然后将这两个文件拷贝到你的项目的程序的。",
                            "脸滚键盘1201",
                            "2025-06-26 09:21",
                            4956,
                            29,
                            14,
                            68,
                            QPixmap(":/test/resoures/test/cover6.png")));
    list.append(BlogPreview("测试文章",
                            "一、标题 作者：韦立钊 [图片]",
                            "脸滚键盘1201",
                            QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm"),
                            0,
                            0,
                            0,
                            0,
                            QPixmap(":/test/resoures/test/cover5.png")));
    return list;
}

QList<BlogPreview> DataAccess::getBlogListByReport()
{
    QList<BlogPreview> list;
    list.append(BlogPreview("测试文章",
                            "一、标题 作者：韦立钊 [图片]",
                            "脸滚键盘1201",
                            QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm"),
                            0,
                            0,
                            0,
                            0,
                            QPixmap(":/test/resoures/test/cover5.png")));
    return list;
}

QList<BlogPreview> DataAccess::getBlogListByHistory()
{
    QList<BlogPreview> list;
    list.append(BlogPreview("网络地址与子网划分：一次性搞清 CIDR、VLSM 和子网掩码",
                            "子网掩码（Subnet Mask）是用于区分网络地址和主机地址的 32 位二进制数，与 IP "
                            "地址一起使用。标识网络号，用于识别网络的地址范围。标识主机号，用于标识网络中的"
                            "具体设备。子网掩码的作用确定 IP "
                            "地址的网络部分和主机部分。帮助路由器快速判断数据包的目标网络。划分子网，提高网"
                            "络管理的灵活性。IP "
                            "地址子网掩码网络地址主机地址范围10.0.0.5255.0.0.010.0.0."
                            "0提供灵活的地址聚合机制，减少路由表项，提高路由效率。",
                            "神的孩子都在歌唱",
                            "2025-07-03 21:54",
                            297,
                            9,
                            0,
                            3,
                            QPixmap(":/test/resoures/test/cover2.png")));
    list.append(BlogPreview("@Bean属性的destroyMethod解释",
                            "摘要：Spring 4.3+ 的 @Bean 默认使用 destroyMethod = "
                            "&quot;(inferred)&quot;，自动检测并调用 Bean 的 close() 或 shutdown() 方法进行销毁。适用于 "
                            "CuratorFramework、JDBC 连接等资源管理，开发者无需显式配置。若需禁用自动推断，可设置 "
                            "destroyMethod = &quot;&quot;，或通过 @PreDestroy "
                            "自定义销毁逻辑。最佳实践建议对关键资源显式指定销毁方法以提高可读性，确保资源正确释放。（",
                            "后会无期77",
                            "2025-07-03 15:12",
                            142,
                            3,
                            0,
                            4,
                            QPixmap(":/other/resoures/other/defaultCover.png")));
    list.append(BlogPreview("【Navicat系列】如何解决导入 MySQL 数据库sql文件失败报错 [Error] 1046 – No database "
                            "selected 问题",
                            "摘要 在使用Navicat导入MySQL数据库时，遇到[Error] 1046 – No database "
                            "selected错误，通常是由于未创建或选中目标数据库直接执行SQL脚本所致。本文提供三步解决方案： "
                            "创建目标数据库：确保数据库存在（如my_project_db），字符集设为utf8mb4。 "
                            "选中数据库：在Navicat中高亮目标库后执行SQL文件。 脚本优化：在SQL文件开头添加USE "
                            "db_name;语句以明确上下文。 "
                            "此外，还涉及权限检查、字符集匹配及大文件导入优化等扩展建议，帮助彻底解决类似",
                            "猫头虎",
                            "2025-07-02 23:50",
                            610,
                            17,
                            1,
                            17,
                            QPixmap(":/test/resoures/test/cover3.png")));
    list.append(BlogPreview("猫头虎 分享：如何解决pip install报错 ModuleNotFoundError: No module named ‘pyserial’问题",
                            "猫头虎是谁？猫头虎 所有平台的IP名称统一为 猫头虎 或 猫头虎技术团队 。 "
                            "PyCharm环境下的pyserial问题解决 在PyCharm 2025开发物联网项目时，pip install "
                            "pyserial安装成功后仍可能因环境错配、包名冲突或IDE配置问题导致ModuleNotFoundError。本文通过"
                            "真实案例，系统梳理了9大排查维度： 环境一致性：验证终端与PyCharm解释器路径是否匹配； "
                            "安装方式优化：使用python -m pip确保安装到目标环境； ",
                            "猫头虎",
                            "2025-07-02 23:50",
                            441,
                            10,
                            0,
                            10,
                            QPixmap(":/test/resoures/test/cover4.png")));
    int n = list.size();
    while (n > 1)
    {
        int k = QRandomGenerator::global()->bounded(n--);
        qSwap(list[n], list[k]);
    }
    return list;
}

QList<Comment> DataAccess::getCommentList()
{
    QList<Comment> list;
    list.append(Comment(QPixmap(":/test/resoures/test/avatar2.jpg"),
                        "Cider瞳",
                        "2024.08.20 21:54",
                        "文章条理清晰，观点独到，内容丰富而不臃肿"));
    list.append(Comment(QPixmap(":/test/resoures/test/avatar3.jpg"),
                        "半截诗​",
                        "2024.08.20 3:33",
                        "文章条理清晰，观点独到，内容丰富而不臃肿，读来让人耳目一新。感谢为我们提供"
                        "了如此高质量的阅读体验，期待您的下一篇佳作。"));
    return list;
}

QList<Comment> DataAccess::getCommentListByNew()
{
    QList<Comment> list;
    list.append(Comment(QPixmap(":/test/resoures/test/avatar1.png"),
                        "脸滚键盘1201",
                        QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm"),
                        "演示评论"));
    list.append(Comment(QPixmap(":/test/resoures/test/avatar2.jpg"),
                        "Cider瞳",
                        "2024.08.20 21:54",
                        "文章条理清晰，观点独到，内容丰富而不臃肿"));
    list.append(Comment(QPixmap(":/test/resoures/test/avatar3.jpg"),
                        "半截诗​",
                        "2024.08.20 3:33",
                        "文章条理清晰，观点独到，内容丰富而不臃肿，读来让人耳目一新。感谢为我们提供"
                        "了如此高质量的阅读体验，期待您的下一篇佳作。"));
    return list;
}

BlogDetail DataAccess::getBlogDetail()
{
    BlogDetail blogDetail;
    blogDetail.title = "QT 连接 MySQL8 提示 QMYSQL driver not loaded";
    blogDetail.time = "2025-06-26 09:21";
    blogDetail.readCount = 4956;
    blogDetail.category = "计算机";
    blogDetail.authorAvatar = QPixmap(":/test/resoures/test/avatar1.png");
    blogDetail.authorName = "脸滚键盘1201";
    blogDetail.htmlContent = "";
    QFile file("QT 连接 MySQL8 提示 QMYSQL driver not loaded.txt");
    if (file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        QTextStream in(&file);
        blogDetail.htmlContent = in.readAll(); // 读取全部内容
        file.close();
    }
    blogDetail.likeCount = 29;
    blogDetail.commentCount = 14;
    blogDetail.favoriteCount = 68;
    return blogDetail;
}
